
app.controller('searchController',function ($scope, searchService,$location) {

    //定义搜索对象 category:商品分类
    $scope.searchMap={'keywords':'','category':'','brand':'','spec':{},'price':'','pageNo':1,'pageSize':10,'sortField':'','sort':''};

    //加载首页传递过来的搜索关键字(用户在首页index.html搜索跳转到search.html)
    $scope.loadKeywords=function(){
        $scope.searchMap.keywords=$location.search()['keywords'];
        $scope.search();
    }

    //搜索
    $scope.search=function () {

        $scope.searchMap.pageNo=parseInt($scope.searchMap.pageNo);

        searchService.search($scope.searchMap).success(
            function (response) {
                $scope.resultMap=response;

                buildPageLabel(); //展示分页栏
            }
        )
    }

    //添加搜索项,改变searchMap的值
    $scope.addSearchItem=function (key, value) {
        
        if (key == 'category' || key == 'brand' || key == 'price') { //如果用户点击的是 商品分类 或者 品牌
            $scope.searchMap[key] = value;

        }else { //如果用户点击的是规格
            $scope.searchMap.spec[key] = value;
        }

        $scope.search();
    }

    //移除复合 搜索条件
    $scope.removeSearchItem=function (key) {
        if (key == 'category' || key == 'brand' || key == 'price') { //如果用户点击的是 商品分类 或者 品牌
            $scope.searchMap[key] = '';

        }else { //如果用户点击的是规格
           delete $scope.searchMap.spec[key];//移除该属性
        }

        $scope.search();
    }

    //构建分页标签(totalPages为总页数)
    buildPageLabel=function(){
        $scope.pageLabel=[];//新增分页栏属性

        var maxPageNo= $scope.resultMap.totalPages;//得到最后页码
        var firstPage=1;//开始页码
        var lastPage=maxPageNo;//截止页码

        $scope.firstDot=true;//前面有点
        $scope.lastDot=true;//后边有点

        if($scope.resultMap.totalPages> 5){  //如果总页数大于5页,显示部分页码
            if($scope.searchMap.pageNo<=3){//如果当前页小于等于3
                lastPage=5; //前5页

                $scope.firstDot=false;//前面没点
            }else if( $scope.searchMap.pageNo>=lastPage-2  ){//如果当前页大于等于最大页码-2
                firstPage= maxPageNo-4;		 //后5页
                $scope.lastDot=false;//后边没点
            }else{ //显示当前页为中心的5页
                firstPage=$scope.searchMap.pageNo-2;
                lastPage=$scope.searchMap.pageNo+2;
            }
        }else {
            $scope.firstDot=false;//前面无点
            $scope.lastDot=false;//后边无点

        }
        //循环产生页码标签
        for(var i=firstPage;i<=lastPage;i++){
            $scope.pageLabel.push(i);
        }
    }


    //点击 页码 查询
    $scope.queryByPage=function (pageNo) {
        //页码验证
        if (pageNo < 1 || pageNo > $scope.resultMap.totalPages) {
            return;
        }

        $scope.searchMap.pageNo=pageNo;

        $scope.search();
    }

    //页码不可用样式
    //1.判断当前页是否为第一页
    $scope.isFirstPage=function () {
        if ($scope.searchMap.pageNo == 1) {
            return true;
        }else {
            return false;
        }
    }
    //2.判断当前页是否为最后一页
    $scope.idEndPage=function () {
        if ($scope.searchMap.pageNo == $scope.resultMap.totalPages) {
            return true;
        }else{
            return false;
        }
    }

    //设置排序规则
    $scope.sortSearch=function (sortField,sort) {
        $scope.searchMap.sortField=sortField;
        $scope.searchMap.sort=sort;
        $scope.search();
    }

    //如果搜索关键字是品牌,隐藏品牌列表
    $scope.keywordsIsBrand=function () {
        for (var i = 0; i < $scope.resultMap.brandList.length; i++) {
            if ($scope.searchMap.keywords.indexOf($scope.resultMap.brandList[i].text) >= 0) {//如果搜索关键字包含品牌
                return true;
            }
        }
        return false;

    }
})